#==============================================================================
# ■ 装备类型系统
#------------------------------------------------------------------------------
# 　管理装备的类型属性，包括武器、防具、饰品
#==============================================================================

module EquipTypeSystem
  # 装备类型常量
  TYPE_WEAPON = 0  # 武器
  TYPE_ARMOR = 1   # 防具
  TYPE_ACCESSORY = 2  # 饰品
  
  # 装备类型名称
  TYPE_NAMES = ["武器", "防具", "饰品"]
  
  # 装备槽类型配置（从左到右4个槽位）
  SLOT_TYPES = [TYPE_WEAPON, TYPE_ARMOR, TYPE_ACCESSORY, TYPE_ACCESSORY]
  
  # 装备ID与类型的映射表
  # 格式：装备ID => 类型
  EQUIP_TYPES = {}
  
  module_function
  
  #--------------------------------------------------------------------------
  # ● 初始化装备类型
  #--------------------------------------------------------------------------
  def initialize_equip_types
    # 如果已经初始化过，直接返回
    return unless EQUIP_TYPES.empty?
    
    # 武器类型装备（只能装备到第1个槽位）
    weapons = [
      1,   # '斩妖'剑
      # 在此添加更多武器ID，注意ID要与数据库里武器的ID一致
    ]
    
    # 防具类型装备（只能装备到第2个槽位）
    armors = [
      2,   # 劣质皮甲
      # 在此添加更多防具ID
    ]
    
    # 饰品类型装备（只能装备到第3、4个槽位）
    accessories = [
      132, # 初心福利
      # 在此添加更多饰品ID
    ]
    
    # 注册武器
    weapons.each do |id|
      EQUIP_TYPES[id] = TYPE_WEAPON
    end
    
    # 注册防具
    armors.each do |id|
      EQUIP_TYPES[id] = TYPE_ARMOR
    end
    
    # 注册饰品
    accessories.each do |id|
      EQUIP_TYPES[id] = TYPE_ACCESSORY
    end
  end
  
  #--------------------------------------------------------------------------
  # ● 获取装备类型
  # equip_id : 装备ID
  # 返回：类型常量（TYPE_WEAPON, TYPE_ARMOR, TYPE_ACCESSORY）
  # 如果未定义，默认返回武器类型
  #--------------------------------------------------------------------------
  def get_equip_type(equip_id)
    return nil if equip_id.nil? || equip_id == 0
    initialize_equip_types
    return EQUIP_TYPES[equip_id] || TYPE_WEAPON  # 默认为武器
  end
  
  #--------------------------------------------------------------------------
  # ● 获取装备类型名称
  # equip_id : 装备ID
  # 返回：类型名称字符串
  #--------------------------------------------------------------------------
  def get_equip_type_name(equip_id)
    type = get_equip_type(equip_id)
    return "" if type.nil?
    return TYPE_NAMES[type]
  end
  
  #--------------------------------------------------------------------------
  # ● 获取装备槽类型
  # slot_index : 装备槽索引（0-3）
  # 返回：类型常量
  #--------------------------------------------------------------------------
  def get_slot_type(slot_index)
    return SLOT_TYPES[slot_index] if slot_index >= 0 && slot_index < SLOT_TYPES.size
    return TYPE_WEAPON
  end
  
  #--------------------------------------------------------------------------
  # ● 获取装备槽类型名称
  # slot_index : 装备槽索引（0-3）
  # 返回：类型名称字符串
  #--------------------------------------------------------------------------
  def get_slot_type_name(slot_index)
    type = get_slot_type(slot_index)
    return TYPE_NAMES[type]
  end
  
  #--------------------------------------------------------------------------
  # ● 检查装备是否可以装备到指定槽位
  # equip_id : 装备ID
  # slot_index : 装备槽索引
  # 返回：true/false
  #--------------------------------------------------------------------------
  def can_equip_to_slot?(equip_id, slot_index)
    return false if equip_id.nil? || equip_id == 0
    equip_type = get_equip_type(equip_id)
    slot_type = get_slot_type(slot_index)
    return equip_type == slot_type
  end
  
  #--------------------------------------------------------------------------
  # ● 设置装备类型
  # equip_id : 装备ID
  # type : 类型常量
  #--------------------------------------------------------------------------
  def set_equip_type(equip_id, type)
    initialize_equip_types
    EQUIP_TYPES[equip_id] = type
  end
end

# 初始化装备类型
EquipTypeSystem.initialize_equip_types

